﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;


namespace proyectoENS
{
    public class ClassGraphics
    {
        private static proyectoENSEntities db = new proyectoENSEntities();
        public static DataTable getEstadoAlumnosByMaterias(int idCurso)
        {
            
            DataTable dt = new DataTable();
            DataRow dr;
            DataColumn dc = new DataColumn();
            dc.ColumnName = "Materia";
            dc.DataType = System.Type.GetType("System.String");
            dt.Columns.Add(dc);

            dc = new DataColumn();
            dc.ColumnName = "Aprobados";
            dc.DataType = System.Type.GetType("System.String");
            dt.Columns.Add(dc);
            
            dc = new DataColumn();
            dc.ColumnName = "Desaprobados";
            dc.DataType = System.Type.GetType("System.String");
            dt.Columns.Add(dc);

            List<Alumnos> alumnos = DALAlumnos.getAlumnosByIdCurso(idCurso);
            Dictionary<Alumnos, double> alumnosNotas = new Dictionary<Alumnos, double>();

            
            foreach (Materias item in DALMaterias.getMateriasByCurso(idCurso))
            {
                int cantAprobados = 0;
                int cantDesaprobados = 0;
                dr = dt.NewRow();
                if (item.nombreMateria.Length > 15)
                    dr[0] = item.nombreMateria.Remove(15);
                else
                    dr[0] = item.nombreMateria.ToString();
                foreach (Alumnos al in alumnos)
                {
                    List<Calificaciones> tmp = (from c in db.Calificaciones
                                                where c.idAlumno == al.id &&
                                                c.idMateria == item.idMateria &&
                                                c.cicloLectivo == DateTime.Now.Year &&
                                                c.calificacion != null
                                                select c).ToList<Calificaciones>();
                    if (tmp.Count > 0)
                    {
                        double promedio = (double)tmp.Average(c => c.calificacion);
                        if (promedio >= 7)
                            cantAprobados++;
                        else
                            cantDesaprobados++;
                        dr[1] = cantAprobados.ToString();
                        dr[2] = cantDesaprobados.ToString();
                    }
                    
                }
                dt.Rows.Add(dr);
                
                
            }
            return dt; 
        }
    }
}
